Skip to content

Conversation

@Johan-Liebert1
Copy link
Collaborator

No description provided.

gemini-code-assist[bot]

This comment was marked as outdated.

@Johan-Liebert1 Johan-Liebert1 force-pushed the cfs-tests branch 8 times, most recently from dc68b62 to 8da9fce Compare January 21, 2026 05:32
@cgwalters cgwalters mentioned this pull request Jan 22, 2026
22 tasks
@Johan-Liebert1 Johan-Liebert1 force-pushed the cfs-tests branch 2 times, most recently from 3799979 to 18bbf01 Compare January 27, 2026 09:23
@Johan-Liebert1 Johan-Liebert1 force-pushed the cfs-tests branch 6 times, most recently from 66fde4e to c6bc807 Compare January 28, 2026 08:37
@Johan-Liebert1
Copy link
Collaborator Author

Requires bootc-dev/infra#95

@Johan-Liebert1 Johan-Liebert1 marked this pull request as ready for review January 28, 2026 08:42
@bootc-bot bootc-bot bot requested a review from jeckersb January 28, 2026 08:43
@Johan-Liebert1 Johan-Liebert1 force-pushed the cfs-tests branch 2 times, most recently from 50dcc5f to 0106a4b Compare January 29, 2026 06:06
@Johan-Liebert1
Copy link
Collaborator Author

Requires bootc-dev/actions#11

@Johan-Liebert1
Copy link
Collaborator Author

Hmmm, it's still picking up bcvk v0.9.0

@Johan-Liebert1 Johan-Liebert1 changed the title WIP: Cfs tests Composefs test parity with ostree Jan 29, 2026
# No fedora-44 due to https://bugzilla.redhat.com/show_bug.cgi?id=2429501
test_os: [fedora-43, centos-9, centos-10]
variant: [ostree, composefs-sealeduki-sdboot]
variant: [ostree, composefs-sealeduki-sdboot, composefs-sdboot, composefs-grub]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exciting!

Comment on lines 182 to 189
case "${{ matrix.variant }}" in
composefs-grub|composefs-sdboot)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer we do this kind of thing in Justfile so it's easier to do locally.

Comment on lines -210 to -215
if [ "${{ matrix.variant }}" = "composefs-sealeduki-sdboot" ]; then
just test-composefs
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think at this point it'd be cleaner to have a mechainism to skip some tests (tmt already has metadata) so it's always just test-tmt integration and the variant detection does the right thing internally.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated. Added a new extra field works_for_composefs. Maybe the name could be a bit better...

.run_inherited_with_cmd_context()?;

// Check for systemd-boot binaries in the EFI/systemd directory
// systemd v258 won't copy the binary if an EFI booted system is not detected
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we really want bootctl --force-if-non-efi-booted or so...did you file a bug report about this? We should chase down the change and find the rationale.

The logic here feels too manual. (I mean if we had to I'd argue we just fake it out by creating /sys/firmware/efi as mount point or so - or wahtever is needed to make bootctl work)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't have systemd v258 in any of our images afaik, but I faced this when testing locally. I haven't filed a bug report as I'm not a 100% sure that it's bootctl's issue. I'll debug this

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have created a tracker for now #1993

}

if args.composefs_backend {
opts.push("--filesystem=ext4".into());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this shouldn't be hardcoded here...actually "filesystem choice" is a whole new dimension to the matrix in general.

We absolutely should be testing (and support!) e.g. "insecure" (fsverity disabled) composefs-rs storage too.

I think we don't even have a mechanism to specify that, but we should. I guess it could be part of the install config?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While trying to add this option, I realized we don't properly support installing without fsverity support :|

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess I'll open a separate PR with the fixes + test

Justfile Outdated

[group('core')]
test-composefs bootloader:
just variant=composefs test-tmt --composefs-backend --bootloader {{bootloader}} \
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per above I think we can attach "supports composefs" as metadata to tests instead

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@Johan-Liebert1 Johan-Liebert1 force-pushed the cfs-tests branch 10 times, most recently from b5eb4e8 to 27fd63f Compare February 5, 2026 10:04
@Johan-Liebert1
Copy link
Collaborator Author

Okay, at least the grub tests partially pass

========================================
Test Summary
========================================
/tmt/plans/integration/plan-01-readonly: PASSED
/tmt/plans/integration/plan-20-image-pushpull-upgrade: PASSED
/tmt/plans/integration/plan-23-install-outside-container: PASSED
/tmt/plans/integration/plan-23-usroverlay: PASSED
/tmt/plans/integration/plan-24-image-upgrade-reboot: PASSED
/tmt/plans/integration/plan-25-soft-reboot: PASSED
/tmt/plans/integration/plan-26-download-only-upgrade: PASSED
/tmt/plans/integration/plan-29-soft-reboot-selinux-policy: FAILED
/tmt/plans/integration/plan-32-install-to-filesystem-var-mount: FAILED
/tmt/plans/integration/plan-33-bib-build: PASSED
========================================

@Johan-Liebert1
Copy link
Collaborator Author

All tests pass except for

/tmt/plans/integration/plan-29-soft-reboot-selinux-policy: FAILED

which should be fixed by #1983

Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>
This is the Non UKI version, i.e. version with Type1 bootloader entries

Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>
The tests assume an ostree system right now, but we want the same tests
for composefs systems as well. Add a `is_composefs` function to
differentitate between the two backends during testing

Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>
Add tests for composefs backend for grub and sdboot. Update the testing
matrix in CI

Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>
We want to install systemd boot and remove bootupd for systemd boot
images. Pass in a `bootloader` argument to the build Dockerfile

Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>
Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>

Remove root= cmdline for sdboot

Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>

Use insecure UEFI for sdboot

Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>
Use the new `works_for_composefs` field to check whether a test is going
to work for a composefs booted system or not. This allows us to simply
do `cargo xtask test-tmt integration` and tests will be filtered by
variant

Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>
On CentOS 9, composefs installation fails with EUCLEAN. Skipping the
tests until we figure it out

Avoid accessing status.booted.composefs.bootloader outside the composefs
path in `test-install-outside-container`

Increase DISK_IMG size to 15G in `test-install-to-filesystem-var-mount`
as we need a larger ESP for composefs, and since we ate up space for
that, ostree test failed with insufficient space

Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>
// Distro identifiers
const DISTRO_CENTOS_9: &str = "centos-9";

const COMPOSEFS_KERNEL_ARGS: [&str; 1] = ["--karg=enforcing=0"];
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

const FIELD_SUMMARY: &str = "summary";
const FIELD_ADJUST: &str = "adjust";

const FIELD_WORKS_FOR_COMPOSEFS: &str = "works_for_composefs";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about the inverse fixme_skip_if_composefs - then the goal is clear: fix the fixme_s.

Comment on lines +78 to +80
if not $is_composefs {
# Now, let's do some checking of the progress json
let progress = open --raw $progress_json | from json -o
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally whenever we do if composefs we have a comment for why that is. In this case it's containers/composefs-rs#140

However we would also fix this with #20 doing "podman pull => composefs reflink".

Comment on lines +36 to +37
let bootloader = ($st.status.booted.composefs.bootloader | str downcase)
$"bootc install to-disk --disable-selinux --via-loopback --composefs-backend --bootloader=($bootloader) --filesystem ext4 --source-imgref ($target_image) ./disk.img"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's ideally factor out the common args

parted -s "$LOOP_DEV" set 1 bios_grub on
# EFI partition (200 MiB)
parted -s "$LOOP_DEV" mkpart primary fat32 2MiB 202MiB
# EFI partition (1 GiB)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally btw in the future our base images come with a repart.d that defines a default for this

Comment on lines +37 to +38
RUN --mount=type=tmpfs,target=/run --mount=type=tmpfs,target=/tmp --mount=type=cache,target=/src/target --mount=type=cache,target=/var/roothome \
rm -rf /var/roothome/.cargo/registry; cargo fetch
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants